package ar.republicagroup.gestion.factory.beans;

import ar.republicagroup.gestion.entities.Caja;
import ar.republicagroup.gestion.entities.Cliente;
import ar.republicagroup.gestion.entities.MovimientoTipo;
import ar.republicagroup.gestion.entities.Usuario;
import ar.republicagroup.gestion.factory.MovimientoCaja;
import ar.republicagroup.gestion.services.ClienteSaldoServices;
import ar.republicagroup.gestion.services.ClienteServices;
import ar.republicagroup.gestion.services.LiquidacionServices;
import ar.republicagroup.gestion.util.JComboBoxModel;
import ar.republicagroup.gestion.util.SpringUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;

/**
 *
 * @author DIEGOALV
 */
public class Pago implements MovimientoCaja{

    Logger log = Logger.getLogger(Pago.class);
    ClienteServices      clienteServices             = (ClienteServices)SpringUtils.getBean("clienteServices");
    LiquidacionServices liquidacionServices          = (LiquidacionServices)SpringUtils.getBean("liquidacionServices");
    ClienteSaldoServices clienteSaldoServices        = (ClienteSaldoServices)SpringUtils.getBean("clienteSaldoServices");
    
    
    @Override
    public Caja createMovimiento(Map<String, Object> params) {
        
            Caja nuevoMov = null;
            
            /*Obtenemos los params del Map*/
            JComboBoxModel combo        = (JComboBoxModel)params.get("combo");
            Cliente cliente             = clienteServices.get(Integer.parseInt(combo.getValue()));
            double importe              = Double.parseDouble(params.get("importe").toString());
            int    usuarioId            = Integer.parseInt(params.get("usuarioId").toString());
            MovimientoTipo movimiento   = (MovimientoTipo)params.get("movimiento");
            
            /* Creamos el Bean de Caja de un Pago */
            nuevoMov = new Caja();
            nuevoMov.setFecha(new Date());
            nuevoMov.setUsuarioId(new Usuario(usuarioId));
            nuevoMov.setClienteId(cliente);
            nuevoMov.setImporte(BigDecimal.valueOf(importe));
            nuevoMov.setDescripcion(cliente.getNombre());
            nuevoMov.setMovimientoTipoId(movimiento);
            nuevoMov.setEstado(1);
            
            return nuevoMov;        
    }
    
}
